--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
tests/backend/test_telemetry_extended.py 14b1b788bf6e0dd00e847272ca2ab69c3c8c7a34 (14b1b788) Text, 1.52 KB
T8b949e# SPDX-License-Identifier: 0BSD
Tff7b72import T7ee787time
Tff7b72from T7ee787meshchatxT7ee787.T7ee787srcT7ee787.T7ee787backendT7ee787.T7ee787telemetry_utils Tff7b72import Te6edf3Telemeter
Tff7b72def Td2a8fftest_pack_unpack_battery_and_linkTb4b4b4(Tb4b4b4)Tb4b4b4:
Te6edf3battery Tff7b72= Tb4b4b4{Ta5d6ff"Ta5d6ffcharge_percentTa5d6ff"Tb4b4b4: T79c0ff85Tb4b4b4, Ta5d6ff"Ta5d6ffchargingTa5d6ff"Tb4b4b4: T79c0ff1Tb4b4b4}
Te6edf3physical_link Tff7b72= Tb4b4b4{Ta5d6ff"Ta5d6ffrssiTa5d6ff"Tb4b4b4: Tff7b72-T79c0ff90Tb4b4b4, Ta5d6ff"Ta5d6ffsnrTa5d6ff"Tb4b4b4: T79c0ff8Tb4b4b4, Ta5d6ff"Ta5d6ffqTa5d6ff"Tb4b4b4: T79c0ff95Tb4b4b4}
Te6edf3ts Tff7b72= Tffa657intTb4b4b4(Te6edf3timeTff7b72.Td2a8fftimeTb4b4b4(Tb4b4b4)Tb4b4b4)
Te6edf3packed Tff7b72= Te6edf3TelemeterTff7b72.Td2a8ffpackTb4b4b4(Te6edf3time_utcTff7b72=Te6edf3tsTb4b4b4, Te6edf3batteryTff7b72=Te6edf3batteryTb4b4b4, Te6edf3physical_linkTff7b72=Te6edf3physical_linkTb4b4b4)
Tff7b72assert Tffa657isinstanceTb4b4b4(Te6edf3packedTb4b4b4, Tffa657bytesTb4b4b4)
Te6edf3unpacked Tff7b72= Te6edf3TelemeterTff7b72.Td2a8fffrom_packedTb4b4b4(Te6edf3packedTb4b4b4)
Tff7b72assert Te6edf3unpackedTb4b4b4[Ta5d6ff"Ta5d6fftimeTa5d6ff"Tb4b4b4]Tb4b4b4[Ta5d6ff"Ta5d6ffutcTa5d6ff"Tb4b4b4] Tff7b72== Te6edf3ts
Tff7b72assert Te6edf3unpackedTb4b4b4[Ta5d6ff"Ta5d6ffbatteryTa5d6ff"Tb4b4b4]Tb4b4b4[Ta5d6ff"Ta5d6ffcharge_percentTa5d6ff"Tb4b4b4] Tff7b72== Te6edf3batteryTb4b4b4[Ta5d6ff"Ta5d6ffcharge_percentTa5d6ff"Tb4b4b4]
Tff7b72assert Te6edf3unpackedTb4b4b4[Ta5d6ff"Ta5d6ffbatteryTa5d6ff"Tb4b4b4]Tb4b4b4[Ta5d6ff"Ta5d6ffchargingTa5d6ff"Tb4b4b4] Tff7b72== Te6edf3batteryTb4b4b4[Ta5d6ff"Ta5d6ffchargingTa5d6ff"Tb4b4b4]
Tff7b72assert Te6edf3unpackedTb4b4b4[Ta5d6ff"Ta5d6ffphysical_linkTa5d6ff"Tb4b4b4]Tb4b4b4[Ta5d6ff"Ta5d6ffrssiTa5d6ff"Tb4b4b4] Tff7b72== Te6edf3physical_linkTb4b4b4[Ta5d6ff"Ta5d6ffrssiTa5d6ff"Tb4b4b4]
Tff7b72assert Te6edf3unpackedTb4b4b4[Ta5d6ff"Ta5d6ffphysical_linkTa5d6ff"Tb4b4b4]Tb4b4b4[Ta5d6ff"Ta5d6ffsnrTa5d6ff"Tb4b4b4] Tff7b72== Te6edf3physical_linkTb4b4b4[Ta5d6ff"Ta5d6ffsnrTa5d6ff"Tb4b4b4]
Tff7b72assert Te6edf3unpackedTb4b4b4[Ta5d6ff"Ta5d6ffphysical_linkTa5d6ff"Tb4b4b4]Tb4b4b4[Ta5d6ff"Ta5d6ffqTa5d6ff"Tb4b4b4] Tff7b72== Te6edf3physical_linkTb4b4b4[Ta5d6ff"Ta5d6ffqTa5d6ff"Tb4b4b4]
Tff7b72def Td2a8fftest_telemeter_from_packed_robustnessTb4b4b4(Tb4b4b4)Tb4b4b4:
T8b949e# Test with corrupted umsgpack data
Tff7b72assert Te6edf3TelemeterTff7b72.Td2a8fffrom_packedTb4b4b4(Ta5d6ffbTa5d6ff"Tffea00\xffTffea00\xffTffea00\xffTa5d6ff"Tb4b4b4) Tff7b72is Tff7b72None
T8b949e# Test with empty data
Tff7b72assert Te6edf3TelemeterTff7b72.Td2a8fffrom_packedTb4b4b4(Ta5d6ffbTa5d6ff"Ta5d6ff"Tb4b4b4) Tff7b72is Tff7b72None
T8b949e# Test with valid umsgpack but unexpected structure
Tff7b72from T7ee787RNST7ee787.T7ee787vendor Tff7b72import Te6edf3umsgpack
Te6edf3invalid_structure Tff7b72= Te6edf3umsgpackTff7b72.Td2a8ffpackbTb4b4b4(Tb4b4b4{Ta5d6ff"Ta5d6ffnot_a_sensorTa5d6ff"Tb4b4b4: T79c0ff123Tb4b4b4}Tb4b4b4)
Tff7b72assert Te6edf3TelemeterTff7b72.Td2a8fffrom_packedTb4b4b4(Te6edf3invalid_structureTb4b4b4) Tff7b72== Tb4b4b4{Tb4b4b4}
Tff7b72def Td2a8fftest_telemeter_unpack_location_robustnessTb4b4b4(Tb4b4b4)Tb4b4b4:
T8b949e# Test with insufficient elements
Tff7b72assert Te6edf3TelemeterTff7b72.Td2a8ffunpack_locationTb4b4b4(Tb4b4b4[Ta5d6ffbTa5d6ff"Ta5d6fflatTa5d6ff"Tb4b4b4, Ta5d6ffbTa5d6ff"Ta5d6fflonTa5d6ff"Tb4b4b4]Tb4b4b4) Tff7b72is Tff7b72None
T8b949e# Test with invalid types
Tff7b72assert Te6edf3TelemeterTff7b72.Td2a8ffunpack_locationTb4b4b4(Tb4b4b4[Ta5d6ff"Ta5d6ffnot_bytesTa5d6ff"Tb4b4b4] Tff7b72* T79c0ff7Tb4b4b4) Tff7b72is Tff7b72None
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────